const createError = require("http-errors");
const express = require("express");
const { debug } = require("./config/index");
const cors = require("cors");

// const path = require("path");
// const logger = require("morgan");

// catch the async errors
require("express-async-errors");

// const cookieParser = require('cookie-parser');
// const usersRouter = require('./routes/users');

const app = express();

// view engine setup
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'html');

// app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// app.use(cookieParser());

// 开发模式需要允许跨域请求
debug && app.use(cors());

// 登录检测中间件
const authMiddleware = require("./middleware/auth");

// API路由
app.use("/api/ping", (req, res) => res.json({ msg: "connect success" }));
app.use("/api/login", require("./routes/login"));
app.use("/api/article", authMiddleware, require("./routes/article"));

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // render the error page
  res.status(err.status || 500);

  res.send({ msg: err.message });
  // res.render('error');
});

module.exports = app;
